﻿/************************************************************************
** 文  件：
**	Preview.h
** 功  能：
**	图片显示器
** 作  者：
**	email:lixx2048@163.com
**  wechat:lixiang6153
**  QQ:941415509
** 日  期：
**	2024/03/15	14:00:00
** 说  明：
**	无
** 版  本：
**	2024/03/15	14:00:00		1.0		lixx2048@163.com
/************************************************************************/
#pragma once
#include <string>
#include <thread>
#include <queue>
#include <boost/serialization/singleton.hpp>
#include "opencv2/opencv.hpp"

class Preview
	: public boost::serialization::singleton<Preview>
{
	// 预览项目
	typedef struct
	{
		std::string window;
		cv::Mat image;
	}IMG_ITEM;
	// 智能指针
	typedef std::shared_ptr<IMG_ITEM> ImageItemPtr;
	// 图片队列
	typedef std::queue<ImageItemPtr> IMG_QUEUE;
public:
	Preview();
	virtual ~Preview();

public:
	// 添加预览图
	void Push(std::string window, cv::Mat& image);
	// 显示预览图
	void Show();
	// 保存图片
	void Save(cv::Mat& image);
	// 图片显示测试
	void Test();

protected:
	// 资源大锁
	std::mutex m_lock;
	// 显示队列
	IMG_QUEUE m_queue;
};

typedef std::shared_ptr<Preview> PreviewPtr;